package cc.rengu.igas.channel.upac.facade;

import cc.rengu.igas.channel.upac.facade.request.*;
import cc.rengu.igas.channel.upac.facade.response.*;
import cc.rengu.igas.channel.upac.facade.result.Result;

/**
 * 银联全渠道网关支付业务API组件
 */
public interface UpacGatewayService {

    /**
     * 个人网关消费撤销
     *
     * @param b2cConsumeCancelRequest 消费撤销请求
     * @return 消费撤销应答
     * @
     */
    Result<B2cConsumeCancelResponse> b2cConsumeCancel(B2cConsumeCancelRequest b2cConsumeCancelRequest);

    /**
     * 个人网关消费退货
     *
     * @param b2cConsumeRefundRequest 消费退货请求
     * @return 个人网关消费退货应答
     * @
     */
    Result<B2cConsumeRefundResponse> b2cConsumeRefund(B2cConsumeRefundRequest b2cConsumeRefundRequest);

    /**
     * 企业网关消费退货
     *
     * @param b2bConsumeRefundRequest 企业网关消费退货请求
     * @return 企业网关消费退货应答
     * @
     */
    Result<B2bConsumeRefundResponse> b2bConsumeRefund(B2bConsumeRefundRequest b2bConsumeRefundRequest);

    /**
     * 个人网关交易状态查询
     *
     * @param b2cTransStateQueryRequest 交易状态查询请求
     * @return 交易状态查询应答
     * @
     */
    Result<B2cTransStateQueryResponse> b2cTransStateQuery(B2cTransStateQueryRequest b2cTransStateQueryRequest);

    /**
     * 企业网关交易状态查询
     *
     * @param b2bTransStateQueryRequest 交易状态查询请求
     * @return 交易状态查询应答
     * @
     */
    Result<B2bTransStateQueryResponse> b2bTransStateQuery(B2bTransStateQueryRequest b2bTransStateQueryRequest);

}
